package com.springbootblog.controller.fontend;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Aspect
@Component
public class ControllerAspect {

    // 定义一个切点，匹配所有controller包下的所有方法
    @Pointcut("execution(* com.springbootblog.controller..*.*(..)) && !@within(org.springframework.stereotype.Service) ")
    public void controllerMethods() {}

    // 在切点方法执行前执行
    @Before("controllerMethods()")
    public Map<String,Object> beforeControllerMethod(JoinPoint joinPoint)
    {
        /*// 这里可以编写你想在方法执行前调用的代码
        System.out.println(joinPoint);
        Object[] args = joinPoint.getArgs();
        for (Object arg : args)
        {
            System.out.println("参数：" + arg);
        }
        Map<String,Object> result = new HashMap<>();
        result.put("code","-150");
        result.put("msg","您的账号在另一地点登录！");
        return result;//*/
        return null;
    }

    // 在切点方法执行后执行
    @AfterReturning("controllerMethods()")
    public void afterControllerMethod(JoinPoint joinPoint) {
        // 这里可以编写你想在方法执行后调用的代码
    }
}
